package com.cseg674.dataentry.javaparser;

import java.util.LinkedList;

/**
    * RdfInterface provides the attributes and methods that define an Interface in the RDF output.
    */
public class RdfInterface extends RdfTreeNode{
    
    private LinkedList <RdfMethod> methods;
    private LinkedList <RdfField> fields;
    private LinkedList <String> superInterfaces;
    private LinkedList <String> imports;
    
    
    /** Creates a new instance of RdfInterface */
    public RdfInterface() {
        this("default");
    }
    public RdfInterface(String perfix) {
        this(perfix, null, null);
    }
    public RdfInterface(String name, String type){
        this("default", name, type);
    }
    public RdfInterface(String perfix, String name, String type) {
        super(perfix, name, type);
        methods = new LinkedList <RdfMethod>();
        fields = new LinkedList <RdfField>();
        superInterfaces = new LinkedList <String>();
        imports = new LinkedList <String>();
    }
    
	/**
     * Returns the methods list
     * @param None
     * @return a linked list of methods
     */
    public LinkedList<RdfMethod> getMethods() {
        return methods;
    }
	
	/**
     * Returns the fields list
     * @param None
     * @return a linked list of fields
     */
    public LinkedList<RdfField> getFields() {
        return fields;
    }
	
	/**
     * Returns the superinterfaces list
     * @param None
     * @return a linked list of superinterfaces
     */
    public LinkedList <String> getSuperInterfaces() {
        return superInterfaces;
    }
	
	/**
     * Returns the imports list
     * @param None
     * @return a linked list of imports
     */
    public LinkedList <String> getImports() {
        return imports;
    }
	
	/**
     * Add a superinterface to the superinterfaces linked list
     * @param String
     * @return boolean
     */
    public boolean addSuperInterface(String s) {
        return superInterfaces.add(s);
    }
	
	/**
     * Add an import to the imports linked list
     * @param String
     * @return boolean
     */
    public boolean addImport(String s) {
        return imports.add(s);
    }
	
	/**
     * Add a method to the methods linked list
     * @param RdfMethod
     * @return boolean
     */
    public boolean addMethod(RdfMethod a) {
        return methods.add(a);
    }
	
	/**
     * Add a field to the fields linked list
     * @param RdfField
     * @return boolean
     */
    public boolean addField(RdfField a) {
        return fields.add(a);
    }

    
}
